package com.jrx.anytxn.transaction.bean;


import com.jrx.anytxn.customer.entity.CmCustomerRightInfo;
import com.jrx.anytxn.param.entity.*;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 还款计划入参
 * @author  zhenghaopu
 * date: 2019/9/2 13:44
*/
public class LoanPlanParamBean {

    private Long id;
    /**
     * 订单id
     */
    private String loanId;

    /**
     * 客户id
     */
    private String customerId;

    /**
     * 租户id
     */
    private String tenantId;

    /**
     * 机构id
     */
    private String organizationId;

    /**
     * 渠道
     */
    private String channel;

    /**
     * 产品id
     */
    private String productId;

    /**
     *  贷款金额
     */
    private BigDecimal loanAmount = BigDecimal.ZERO;

    /**
     * 进位条件
     */
    private Integer carryCondInt;

    /**
     * 贷款期限
     */
    private Integer tenor;

    /**
     * 还款日
     */
    private Integer cycle;

    /**
     * 最小间隔天数
     */
    private Integer minIntervalDays;

    /**
     * 日利率
     */
    private BigDecimal dailyRate;

    /**
     * 月利率
     */
    private BigDecimal monthRate;

    /**
     * 月利率
     */
    private BigDecimal yearRate;

    /**
     * 已还期数
     */
    private Integer castTenor;

    /**
     * 业务日期
     */
    private Date businessDate;

    /**
     *  利息信息
     */
    private PrInterestTable interestTable;

    /**
     * 分期费用
     */
    private PrInstallmentFeeTable installmentFeeTable;

    /**
     * 还款方式
     */
    private PrAmortMethod amortMethod;

    /**
     * 产品信息
     */
    private PrProductTable prProductTable;

    /**
     * 贷款日期
     */
    private Date postingDate;

    /**
     * 首期还款日
     * 提前还款重建还款计划时使用
     */
    private Date firstPaymentDay;

    /**
     * 贴息天数
     */
    private Integer waiveInterestDays = 0;

    /**
     * 贴息信息
     */
    private PrWaiveInterestTable prWaiveInterestTable;

    /**
     * 贴息日利率
     */
    private BigDecimal waiveDailyRate;

    /**
     * 贴息年利率
     */
    private BigDecimal waiveYearRate;

    /**
     * 产品权益
     */
    private CmCustomerRightInfo rightInfo;

    /**
     * 定价标签
     */
    private String labelCode;

    /**
     * 促销活动
     */
    private PrPromotionInfo prPromotionInfo;

    /**
     * 促销活动  固定利率情况  原日利率
     */
    private BigDecimal originalDailyRate;

    public BigDecimal getWaiveYearRate() {
        return waiveYearRate;
    }

    public void setWaiveYearRate(BigDecimal waiveYearRate) {
        this.waiveYearRate = waiveYearRate;
    }

    public BigDecimal getWaiveDailyRate() {
        return waiveDailyRate;
    }

    public void setWaiveDailyRate(BigDecimal waiveDailyRate) {
        this.waiveDailyRate = waiveDailyRate;
    }

    public PrWaiveInterestTable getPrWaiveInterestTable() {
        return prWaiveInterestTable;
    }

    public void setPrWaiveInterestTable(PrWaiveInterestTable prWaiveInterestTable) {
        this.prWaiveInterestTable = prWaiveInterestTable;
    }

    public Integer getWaiveInterestDays() {
        return waiveInterestDays;
    }

    public void setWaiveInterestDays(Integer waiveInterestDays) {
        this.waiveInterestDays = waiveInterestDays;
    }


    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Integer getCarryCondInt() {
        return carryCondInt;
    }

    public void setCarryCondInt(Integer carryCondInt) {
        this.carryCondInt = carryCondInt;
    }


    public BigDecimal getMonthRate() {
        return monthRate;
    }

    public void setMonthRate(BigDecimal monthRate) {
        this.monthRate = monthRate;
    }

    public BigDecimal getDailyRate() {
        return dailyRate;
    }

    public void setDailyRate(BigDecimal dailyRate) {
        this.dailyRate = dailyRate;
    }

    public BigDecimal getLoanAmount() {
        return loanAmount;
    }

    public void setLoanAmount(BigDecimal loanAmount) {
        this.loanAmount = loanAmount;
    }

    public Integer getTenor() {
        return tenor;
    }

    public void setTenor(Integer tenor) {
        this.tenor = tenor;
    }

    public Integer getCycle() {
        return cycle;
    }

    public void setCycle(Integer cycle) {
        this.cycle = cycle;
    }

    public Integer getMinIntervalDays() {
        return minIntervalDays;
    }

    public void setMinIntervalDays(Integer minIntervalDays) {
        this.minIntervalDays = minIntervalDays;
    }

    public Integer getCastTenor() {
        return castTenor;
    }

    public void setCastTenor(Integer castTenor) {
        this.castTenor = castTenor;
    }


    public BigDecimal getYearRate() {
        return yearRate;
    }

    public void setYearRate(BigDecimal yearRate) {
        this.yearRate = yearRate;
    }

    public PrInterestTable getInterestTable() {
        return interestTable;
    }

    public void setInterestTable(PrInterestTable interestTable) {
        this.interestTable = interestTable;
    }

    public PrInstallmentFeeTable getInstallmentFeeTable() {
        return installmentFeeTable;
    }

    public void setInstallmentFeeTable(PrInstallmentFeeTable installmentFeeTable) {
        this.installmentFeeTable = installmentFeeTable;
    }

    public PrAmortMethod getAmortMethod() {
        return amortMethod;
    }

    public void setAmortMethod(PrAmortMethod amortMethod) {
        this.amortMethod = amortMethod;
    }

    public Date getBusinessDate() {
        return businessDate;
    }

    public void setBusinessDate(Date businessDate) {
        this.businessDate = businessDate;
    }

    public String getLoanId() {
        return loanId;
    }

    public void setLoanId(String loanId) {
        this.loanId = loanId;
    }

    public String getCustomerId() {
        return customerId;
    }

    public void setCustomerId(String customerId) {
        this.customerId = customerId;
    }

    public String getTenantId() {
        return tenantId;
    }

    public void setTenantId(String tenantId) {
        this.tenantId = tenantId;
    }

    public String getOrganizationId() {
        return organizationId;
    }

    public void setOrganizationId(String organizationId) {
        this.organizationId = organizationId;
    }

    public String getChannel() {
        return channel;
    }

    public void setChannel(String channel) {
        this.channel = channel;
    }

    public String getProductId() {
        return productId;
    }

    public void setProductId(String productId) {
        this.productId = productId;
    }


    public Date getPostingDate() {
        return postingDate;
    }

    public void setPostingDate(Date postingDate) {
        this.postingDate = postingDate;
    }

    public PrProductTable getPrProductTable() {
        return prProductTable;
    }

    public void setPrProductTable(PrProductTable prProductTable) {
        this.prProductTable = prProductTable;
    }

    public Date getFirstPaymentDay() {
        return firstPaymentDay;
    }

    public void setFirstPaymentDay(Date firstPaymentDay) {
        this.firstPaymentDay = firstPaymentDay;
    }

    public CmCustomerRightInfo getRightInfo() {
        return rightInfo;
    }

    public void setRightInfo(CmCustomerRightInfo rightInfo) {
        this.rightInfo = rightInfo;
    }

    public String getLabelCode() {
        return labelCode;
    }

    public void setLabelCode(String labelCode) {
        this.labelCode = labelCode;
    }

    public PrPromotionInfo getPrPromotionInfo() {
        return prPromotionInfo;
    }

    public void setPrPromotionInfo(PrPromotionInfo prPromotionInfo) {
        this.prPromotionInfo = prPromotionInfo;
    }

    public BigDecimal getOriginalDailyRate() {
        return originalDailyRate;
    }

    public void setOriginalDailyRate(BigDecimal originalDailyRate) {
        this.originalDailyRate = originalDailyRate;
    }

    @Override
    public String toString() {
        return "LoanPlanParamBean{" +
                "id=" + id +
                ", loanId='" + loanId + '\'' +
                ", customerId='" + customerId + '\'' +
                ", tenantId='" + tenantId + '\'' +
                ", organizationId='" + organizationId + '\'' +
                ", channel='" + channel + '\'' +
                ", productId='" + productId + '\'' +
                ", loanAmount=" + loanAmount +
                ", carryCondInt=" + carryCondInt +
                ", tenor=" + tenor +
                ", cycle=" + cycle +
                ", minIntervalDays=" + minIntervalDays +
                ", dailyRate=" + dailyRate +
                ", monthRate=" + monthRate +
                ", yearRate=" + yearRate +
                ", castTenor=" + castTenor +
                ", businessDate=" + businessDate +
                ", interestTable=" + interestTable +
                ", installmentFeeTable=" + installmentFeeTable +
                ", amortMethod=" + amortMethod +
                ", prProductTable=" + prProductTable +
                ", postingDate=" + postingDate +
                ", firstPaymentDay=" + firstPaymentDay +
                ", waiveInterestDays=" + waiveInterestDays +
                ", prWaiveInterestTable=" + prWaiveInterestTable +
                ", waiveDailyRate=" + waiveDailyRate +
                ", waiveYearRate=" + waiveYearRate +
                ", rightInfo=" + rightInfo +
                ", labelCode='" + labelCode + '\'' +
                ", prPromotionInfo=" + prPromotionInfo +
                ", originalDailyRate=" + originalDailyRate +
                '}';
    }
}
